home *** CD-ROM | disk | FTP | other *** search
- package Cutscene
- {
- import Common.ResourceManager;
- import Common.SoundManager;
- import Common.SoundObject;
- import flash.display.Bitmap;
- import flash.display.DisplayObject;
- import flash.display.MovieClip;
- import flash.media.Sound;
- import flash.media.SoundChannel;
- import flash.utils.getDefinitionByName;
-
- public class CutsceneState
- {
-
- private static var bgChannel:SoundChannel;
-
- private static var bgSound:Sound;
-
- private static var resource:ResourceManager;
-
-
- private var buffer:Array;
-
- private var bg:String;
-
- private var personOverride:Array;
-
- private var name:String;
-
- private var index:int = 0;
-
- private var currentScene:MovieClip = null;
-
- private var person:Array;
-
- private var decisions:Array;
-
- private var dialogue:Array;
-
- private var bgMusic:String;
-
- private var personZSort:Array;
-
- private var isDialogueBoxInvisible:Boolean;
-
- private var adjustments:Array;
-
- private var defaultResolve:String;
-
- private var isLoop:Boolean;
-
- public function CutsceneState()
- {
- person = [];
- personZSort = [];
- adjustments = [];
- dialogue = [];
- decisions = [];
- buffer = [];
- personOverride = [];
- index = 0;
- currentScene = null;
- super();
- }
-
- public static function fromXML(param1:XML, param2:MovieClip) : CutsceneState
- {
- var _loc3_:CutsceneState = null;
- var _loc4_:* = undefined;
- var _loc5_:XML = null;
- var _loc6_:XML = null;
- var _loc7_:XML = null;
- var _loc8_:CutsceneDecision = null;
- var _loc9_:CutsceneDialogue = null;
- _loc3_ = new CutsceneState();
- _loc4_ = param1.People.elements().length();
- for each(_loc5_ in param1.People.elements())
- {
- _loc3_.person.push(_loc5_.@name);
- _loc3_.addAdjustments(_loc5_.@name,_loc5_.@xAdjust,_loc5_.@yAdjust,_loc5_.@flipX == "true",_loc5_.@flipY == "true",_loc4_--);
- }
- for each(_loc6_ in param1.Decisions.elements())
- {
- _loc8_ = CutsceneDecision.fromXML(_loc6_,param2);
- _loc3_.decisions[_loc8_.name] = _loc8_;
- }
- for each(_loc7_ in param1.Dialogues.elements())
- {
- _loc9_ = CutsceneDialogue.fromXML(_loc7_,param2);
- _loc3_.dialogue.push(_loc9_);
- }
- _loc3_.name = param1.@name;
- _loc3_.defaultResolve = param1.@defaultResolve;
- _loc3_.bg = param1.Background.@imagename;
- _loc3_.bgMusic = param1.Background.@soundname;
- _loc3_.isLoop = param1.Background.@isSoundLoop;
- _loc3_.isDialogueBoxInvisible = !(param1.@isDialogueBoxInvisible.toString() == "" || param1.@isDialogueBoxInvisible.toString() == "false");
- return _loc3_;
- }
-
- public function get IsDialogueBoxInvisible() : Boolean
- {
- return isDialogueBoxInvisible;
- }
-
- public function addPersonOverride(param1:String, param2:String, param3:DisplayObject) : *
- {
- personOverride.push(param1);
- personOverride.push(param2);
- personOverride.push(param3);
- }
-
- public function overridePerson(param1:String, param2:String, param3:DisplayObject) : *
- {
- var _loc4_:* = undefined;
- var _loc5_:DisplayObject = null;
- _loc4_ = 0;
- while(_loc4_ < person.length)
- {
- if(param1 == person[_loc4_])
- {
- person[_loc4_] = param2;
- }
- _loc4_++;
- }
- _loc5_ = currentScene.getChildByName(param2);
- currentScene.removeChild(_loc5_);
- param3.x = _loc5_.x;
- param3.y = _loc5_.y;
- buffer[param1] = null;
- buffer[param2] = param3;
- currentScene.addChild(param3);
- }
-
- public function get CurrentDialogue() : CutsceneDialogue
- {
- return dialogue[index];
- }
-
- public function get BG() : String
- {
- return bg;
- }
-
- public function getDecision(param1:String) : CutsceneDecision
- {
- return decisions[param1];
- }
-
- public function getPerson(param1:String) : MovieClip
- {
- return buffer[param1];
- }
-
- public function nextPage() : int
- {
- if(CurrentDialogue.hasDecision())
- {
- return -1;
- }
- ++index;
- if(index < dialogue.length)
- {
- return CurrentDialogue.initializeDialogue(resource,this);
- }
- return 0;
- }
-
- public function get BGMusic() : String
- {
- return bgMusic;
- }
-
- public function loadCutscene(param1:MovieClip, param2:ResourceManager) : int
- {
- var _loc3_:Array = null;
- var _loc4_:Sound = null;
- var _loc5_:Class = null;
- var _loc6_:* = undefined;
- var _loc7_:String = null;
- var _loc8_:DisplayObject = null;
- _loc3_ = [];
- _loc4_ = param2.getResource(BGMusic,ResourceManager.C_SOUND);
- currentScene = param1;
- _loc6_ = 0;
- while(_loc6_ < person.length)
- {
- _loc5_ = getDefinitionByName(person[_loc6_]) as Class;
- if(_loc3_[person[_loc6_]] != null)
- {
- _loc3_[person[_loc6_]] = null;
- }
- _loc3_[person[_loc6_]] = new _loc5_() as MovieClip;
- _loc6_++;
- }
- for(_loc7_ in _loc3_)
- {
- if(_loc3_[_loc7_] != null)
- {
- if(!(_loc3_[_loc7_] is Bitmap))
- {
- if(_loc3_[_loc7_] is MovieClip)
- {
- trace("arrData[key]" + _loc7_);
- _loc8_ = _loc3_[_loc7_];
- param1.addChild(_loc8_);
- if(adjustments[_loc7_ + "xFlip"] == true)
- {
- _loc8_.scaleX *= -1;
- }
- _loc8_.x = adjustments[_loc7_ + "xOffset"];
- _loc8_.y = adjustments[_loc7_ + "yOffset"];
- buffer[_loc7_] = _loc8_;
- }
- }
- }
- }
- for(_loc7_ in buffer)
- {
- if(buffer[_loc7_] is MovieClip)
- {
- param1.setChildIndex(buffer[_loc7_],adjustments[_loc7_ + "zOrder"]);
- }
- }
- if(this.bgMusic != null && _loc4_ != null)
- {
- SoundManager.getInstance().playSoundFromRes(this.bgMusic,_loc4_,SoundObject.C_BG);
- }
- if(resource == null)
- {
- resource = param2;
- }
- return CurrentDialogue.initializeDialogue(param2,this);
- }
-
- public function unloadCutscene(param1:Boolean) : *
- {
- var _loc2_:* = undefined;
- for each(_loc2_ in buffer)
- {
- currentScene.removeChild(_loc2_);
- }
- buffer = new Array();
- currentScene = null;
- if(param1)
- {
- resource.purgeAllResources();
- }
- }
-
- public function get Name() : String
- {
- return name;
- }
-
- public function get DefaultResolve() : String
- {
- return defaultResolve;
- }
-
- public function loadBG(param1:MovieClip) : *
- {
- if(bg != "")
- {
- buffer[bg] = new Bitmap(MainDocument.BackgroundPackage.getImage(bg));
- param1.addChild(buffer[bg]);
- }
- }
-
- public function addAdjustments(param1:String, param2:int = 0, param3:int = 0, param4:Boolean = false, param5:Boolean = false, param6:* = 0) : *
- {
- adjustments[param1 + "xOffset"] = param2;
- adjustments[param1 + "yOffset"] = param3;
- adjustments[param1 + "xFlip"] = param4;
- adjustments[param1 + "yFlip"] = param5;
- adjustments[param1 + "zOrder"] = param6;
- }
- }
- }
-